#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){
	int sss=0,www=1;
	char chh=getchar();
	while(chh<'0'||chh>'9'){
		if(chh=='-') www=-1;
		chh=getchar();
	}
	while(chh>='0'&&chh<='9'){
		sss=sss*10+chh-'0';
		chh=getchar();
	}
	return sss*www;
}
const int mod=998244353;
int n,k;
int a[200005],b[200005];
namespace solve1{
	bool vis[10]; int ans=0;
	int color[10];
	int head[10],to[15],nxt[15],tot=1;
	void add(int u,int v){
		to[++tot]=v;
		nxt[tot]=head[u];
		head[u]=tot;
	}
	void add_edge(int u,int v){ add(u,v),add(v,u); }
	void bfs(int s){
		color[s]=s;
		queue<int> q; q.push(s);
		while(!q.empty()){
			int x=q.front(); q.pop();
			for(register int i=head[x];i;i=nxt[i]){
				int u=to[i]; if(u==0) continue;
				if(!color[u]){
					color[u]=s;
					q.push(u);
				}
			}
		}
	}
	bool check(int cnt){
		memset(color,0,sizeof color);
		memset(head,-1,sizeof head); tot=1;
		for(register int i=1;i<n;i++){
			if(!vis[i]) add_edge(a[i],b[i]);
		//	cout<<vis[i]<<" ";
		} //puts("");
		for(register int i=1;i<=n;i++){
			if(!color[i]) bfs(i);
		} int sum=0;
		for(register int i=1;i<=n;i++){
			int r=i; sum++;
			while(r<n&&color[r+1]==color[i]) r++;
			i=r;
		}
		return sum==cnt;
	}
	void dfs(int cnt,int st,int now){
		if(now==cnt){
			if(check(cnt)) ans++;
		}
		for(register int i=st;i<n;i++){
			vis[i]=true;
			dfs(cnt,i+1,now+1);
			vis[i]=false;
		}
	}
	void solve(int x){
		memset(vis,false,sizeof vis);
		for(register int i=1;i<n;i++){
			vis[i]=true;
			dfs(x,i+1,2);
			vis[i]=false;
		}
	}
	void main(){
		puts("1");
		for(register int i=2;i<=k;i++){
			ans=0;
			solve(i);
			cout<<ans<<"\n";
		} 
	}
}
namespace solve3{
	int dp[200002][402];
	void main(){
		//dp[1][1]=1;
		for(register int i=1;i<=n;i++) dp[i][1]=1;
		for(register int i=2;i<=n;i++){
			for(register int j=2;j<=min(i,k);j++){
				dp[i][j]=(dp[i-1][j-1]+dp[i-1][j])%mod;
			}
		}
		for(register int i=1;i<=k;i++) cout<<dp[n][i]<<"\n";
	}
}
signed main(){
	freopen("soft.in","r",stdin);
	freopen("soft.out","w",stdout);
	n=read(),k=read();
	for(register int i=1;i<n;i++){
		a[i]=read(),b[i]=read();
	}
	if(n<=5) solve1::main();
	else solve3::main();
	return 0;
}
